Справочное руководство по TDMS 7.0 API
VB Script
Смотри также Отправить замечание

Glossary Item Box

Исходный текст

Option Explicit
Call TestAttributeDef()

'==============================================================================
' Тест методов и свойств объектов TDMSAttributeDef и TDMSAttributeDefs:
' создать новый тип атрибута, новый объект с атрибутом этого типа и
' попытаться удалить созданный тип атрибута из системы.

'Выполнять скрипт может только пользователь с правами системного администратора.
'==============================================================================
Sub TestAttributeDef()
        Dim AttrDef, obj, ObjDef

        'Создать тип объекта для тестирования (или использовать существующий)
        If Not ThisApplication.ObjectDefs.Has("OBJ_TEST") Then 
                    Set ObjDef = ThisApplication.ObjectDefs.Create
                    ObjDef.SysName = "OBJ_TEST"
        Else: Set ObjDef = ThisApplication.ObjectDefs("OBJ_TEST")
        End If
        
        'Создать новый тип атрибута, дать ему описание и присвоить целочисленный тип данных 
        Set AttrDef = ObjDef.AttributeDefs.Create
        AttrDef.Description = "Attribute for testing"
        AttrDef.Type = tdmInteger
        'Присвоить значение по умолчанию (можно, поскольку тип атрибута создан в коллекции типа 
        'объекта: это значит, что для всех новых объектов "OBJ_TEST" значение атрибута 
        'AttrDef будет равно 10). 
        AttrDef.Value = 10 

        'Новый тип атрибута немедленно добавляется в коллекцию приложения (глобальную), 
        'хотя создан в локальной коллекции типа объекта
        MsgBox "Тип атрибута """ & AttrDef.Description & _
                """ существует в коллекции ThisApplication.AttributeDefs: " & Chr(13) & _
                ThisApplication.AttributeDefs.Has(AttrDef) 'Методу Has можно передать
                                                'свойство типа атрибута (SysName, Description etc)
        
        'Создать объект типа "OBJ_TEST" и присвоить другое значение нашему атрибуту
        Set obj = ThisApplication.ObjectDefs("OBJ_TEST").CreateObject
        obj.Attributes(AttrDef.SysName).Value = 12345
        
        'Теперь удалить тип атрибута из коллекции типа объекта: это возможно, и никак не отразится 
        'на уже созданном объекте - только для новых: на них наш атрибут уже не появится.
        obj.ObjectDef.AttributeDefs.Remove AttrDef
        MsgBox "Значение атрибута на объекте: " & obj.Attributes(AttrDef.SysName).Value
        'А такой вызов приведет к удалению типа атрибута из системы. Правда, в данном случае ничего 
        'не получится, поскольку есть пользовательский объект с атрибутом типа AttrDef.
        'obj.ObjectDef.AttributeDefs(AttrDef).Erase
        
        'Удалить созданный нами объект. Если этого не сделать, то тип атрибута 
        'нельзя будет удалить из системы: связи объекта продолжают храниться в базе
        obj.Erase
        
        'Теперь можно удалить тип атрибута из системы.
        ThisApplication.AttributeDefs.Remove(AttrDef)
        'То же самое можно было сделать другим способом:
        '    ThisApplication.AttributeDefs(AttrDef).Erase

        MsgBox "Тип атрибута """ & AttrDef.Description & _
                """ существует в коллекции ThisApplication.AttributeDefs: " & Chr(13) & _
                ThisApplication.AttributeDefs.Has(AttrDef)
End Sub 
'==============================================================================

© 2023 CSoft Development. Все права защищены.